約 3,764,903 件
https://w.atwiki.jp/benewnarusuji/pages/13.html
mysql status Server characterset sjis Db characterset sjis Client characterset sjis Conn. characterset sjis Server characterset サーバーのデフォルトキャラクタセット Db characterset デフォルトデータベース(use xxxで選択したデータベース)で使用される文字コード。デフォルトデータベースがまだ選択されていない場合は、Server charactersetと同じものが表示される。 Client characterset クライアントから送られてくるクエリの文字コードを指定。 Conn. characterset サーバーはクエリを受信した後に変換する文字コードを指定する。サーバーはクライアントから送られたクエリをClient charactersetからConn. charactersetに変換する。 参考 http //wiki.bit-hive.com/tomizoo/pg/MySQL%20%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%B4%D8%CF%A2
https://w.atwiki.jp/c-note/pages/31.html
MySQL Workbenchでの接続設定 MySQL Workbenchでの接続設定接続設定1.MySQL Workbenchの起動 2.新しい接続 3.接続先の入力 4.パスワードの入力 5.接続の成功 6.確認 接続設定 1.MySQL Workbenchの起動 プログラムメニューより、MySQL Workbenchを起動します。 2.新しい接続 「New Connection」をクリックします。 3.接続先の入力 「Connection Name」に接続名を入力します。何でもかまいませんが、分かり易くするため、データベース名にしておきます。 「Host name」に接続先のPC名を入力します。ここではIPアドレスを入れました。 「Port」は変更していれば適切に入力してください。 「User name」はデータベースに接続するユーザー名を入力します。 「Password」はパスワードを入れておくことができますが、ここでは入力しませんでした。 一通り入力が終わったら、「Test Connection」をクリック。 4.パスワードの入力 ここでパスワードを聞かれるので入力して、OKをクリックします。 先に、パスワードが入力されている場合は、パスワードは聞かれなかったと思います。 5.接続の成功 このダイアログが表示されれば接続成功です。 OKをクリックしてダイアログと設定ウィンドウを閉じます。 6.確認 先ほど作成した接続設定が追加されています。 以後、この接続を使って様々な作業を行うことが可能になります。
https://w.atwiki.jp/irukakiss/pages/69.html
自宅サーバー・Apche・PHP・PDO・SQLite環境でのメモ帳アプリの活用 メモ帳アプリはすべてが入っている教材でもあるが、実際そのまま使える道具でもある。これをサーバーに置いて本文にHTMLやXMLを書けば、それらの文はそのままWEBページに表示できるでしょ。 極端な話、WEBページのすべての文をデータベースからデータとして拾ってきて構成することもできる。 そこまでやることはないが、例えば新着情報や、日替わりメニューや、リンクや、RSSや、その他頻繁に更新する部分はデータベースのデータとしておけば何時でもどこでもブラウザさえ開ければメモ帳アプリにアクセスして編集できるのだ。極端な話、携帯からでもできるだろう。FTPサーバーもFTPソフト必要ない。 僕は自宅のWindowsパソコン1台をWEBサーバーにしているが、メールはもちろんFTPもやっていない。ポートを開けると、何かと面倒なので。更新は直接書きかえるか、@WikiのFTPにHTML文などを入れて、それを参照している部分はそのファイルを書きかえている。データベースにホームページの内容が入っていれば、そうした不便から開放される。サーバーはWEBサーバーだけでよい。 メモ帳アプリの具体的な使い方 公開しているディレクトリにメモ帳アプリを置かないと「いつでも、どこでも」更新できないので意味がない。公開ディレクトリに置くためには自分(または管理者)しか操作できないように一応の対策をする。国家機密じゃあるまいしそんなに大そうには考えず、PHPによるベーシック認証ですませる。レッツPHP!の小物の中の-パスワード制限-のプログラムを使わせていただく。レッツPHP!というサイトは本当に好感が持てる。シンプルなのによーく考えられている。メモ帳アプリのプログラムの先頭にinclude_once( auth.php );と書くだけでベーシック認証しないとプログラムが走らないようになるのだ。無論パスワードを書いたテキストファイルは公開ディレクトリ以外に置いてフルパスで指定。こうすればかなり悪意がない限りデータを書きかえられることはない。なお、SQLiteのデータベースファイルはこれも公開ディレクトリより上に置けばダウンロードされることもない。かなりセキュア。 メモ帳アプリで「新着情報」、「お知らせ」などのHTMLやRSSのXMLを登録し、実際にそれらを表示するページに次のようなPHPを挿入すればちゃんと表示される。これによって、「いつでもどこでも」手軽に内容を更新できるというわけ。FTPサーバーも、FTPソフトもいらない。ブラウザさえ開くことができる環境なら世界中どこからでも自宅サーバーの更新ができる。 メモ帳アプリに習ってプリペアでやるなら、 ?php // データベースに接続 $conn = new PDO( sqlite memo.sqlite ); $sql = SELECT * FROM memo WHERE id = 5 ; $stmt = $conn- prepare($sql); $stmt- execute(); $row = $stmt- fetch(PDO FETCH_ASSOC); echo $row[ contents ]; $conn = null; ? まあ、でも普通はクエリにSQL文を書くでしょ。 ?php $conn = new PDO( sqlite memo.sqlite );// データベースに接続 $stmt = $conn- query( SELECT * FROM memo WHERE id = 5 );//検索 $row = $stmt- fetch(PDO FETCH_ASSOC);//行全体を連想配列として取得 $conn = null;//接続を切る echo $row[ contents ];//本文を表示 ? この例ではidで検索しているが、titleで「新着情報」とか「お知らせ」とかで検索したほうがわかりやすいと思う。 ?php $conn = new PDO( sqlite 相対指定パス/memo.sqlite );// データベースに接続 $stmt = $conn- query( SELECT contents FROM memo WHERE title = 新着情報 );//検索 $row = $stmt- fetch(PDO FETCH_ASSOC);//行全体を連想配列として取得 $conn = null;//接続を切る echo $row[ contents ];//本文を表示? 普通に表示すると、なぜか「 」だとか漢字の「定」の文字だとかの前にやたらとバックスラッシュが入る。PHPでは普通にあることなのか、それを取り除く関数があるのだ。stripslashesというやつです。これを使えば解決。 だけど根本はフォームでPOSTする度にセキュリティーの関係でこうなるらしい。それで、フォームからのPOSTを受ける$_POSTという連想配列のようそについて、stripslashesを施してやれば、全て解決する。メモ帳アプリであれば、 // データの取得 $act = (isset($_POST[ act ])) ? $_POST[ act ] ; $id = (isset($_REQUEST[ id ])) ? intval($_REQUEST[ id ]) ; $contents = (isset($_POST[ contents ])) ? stripslashes($_POST[ contents ]) ; $title = (isset($_POST[ title ])) ? stripslashes($_POST[ title ]) (無題) ; $dt = date( Y-m-d H i s ); ここのところでやれば他のところは何もしないほうがいい。いろんなところでやると、5C問題にぶち当たる。「ソ」や「表」が文字化け。これは、\を取り除きすぎなんだよ。めったやたらととっぱらっちゃ駄目です。 stripslashesは$_POSTで使えば次のfgetcsvであろうが、shift-jisでも問題なく使える。 メモ帳アプリを改造してCSVファイルをインポート CSVのインポートはGUIやコマンドラインツールに用意されているが、実際やったら文字化けで無理。調べると、SQLiteはUTF-8でないと駄目で、HTMLもUTF-8にしろっていうこと。今更そんなのやってられない。そういう流れだったら逆らえないし、いずれやることになるだろうが、率先してやることはない。SHIFT-JISでいいじゃないか。ふつうにSQLite使えていると思うんだがね。要するにはじめから用意されているやつでやったら、文字化けでお手上げ。この辺のことに悩み出したら、どれだけ時間がかかるかわからない。アミーゴで作ったDBのファイルはCSVにできるので、ともかくこれをさっさとインポートしないと話が始まらない。 というわけで、不器用でも力ずくで、インポートする。PHPのfgetcsvで1行ずつ読み込み、メモ帳アプリのadd_dataファンクションで書き込んでいけばよいだけのこと。文字化けに悩む時間のことを思えば手間はましというもの。 9個ぐらいのフィールドで、ためしにやってみたが110行ほどのCSVをインポートするのに5秒ぐらいかかるかな。1万行じゃあるまいし。この時間は問題にならない。 ポイントは、fgetcsvでCSVデータを1行ずつ読み込んでファイルが終わるまで配列に入れるという原始的方法。 POSTで、読み込むCSVファイルのファイル名のみを取得している。これは当てずっぽうがたまたま当たっているような感じで、邪道かもしれない。普通はフォームで、enctype= multipart/form-data を指定してPOSTすれば$_FILES[ file ][ name ]にファイル名が返るはずだが、どうもそれがうまくいかない。 enctype= multipart/form-data をしなかったら$_POST[ file ]にファイル名が入るのだ。事実として。それでいいじゃないか。できるんだから。 html !-- 1.このプログラムは生成したいデータベースファイルを置く場所(ディレクトリ)と同じ場所に置く。 2.さらに、インポートするcsvファイルを同じ場所に置く。 3.生成するデータベースファイル名確認(69行目 menu.sqlite)。 4.生成するテーブル名確認(72,90,115行目 menu)。 5.このプログラムをブラウザで実行する。 6.インポートするcsvファイルを参照して指定。 7.インポートボタンを押す。 -- head meta http-equiv= Content-Type content= text/html; charset=Shift_JIS title メニューアプリケーション(PDO関数)CSVファイルインポート用 /title meta http-equiv= content-style-type content= text/css style type= text/css !-- .sfont{ font-size 12px } -- /style /head body class= sfont h4 メニューアプリケーション(PDO関数)CSVファイルインポート用 /h4 ?php // データの取得 $act = (isset($_POST[ act ])) ? $_POST[ act ] ; $impfn = (isset($_POST[ impfn ])) ? stripslashes($_POST[ impfn ]) ;//インポートするcsvファイル名 //$dt = date( Y-m-d H i s );//インポートファイルの最終更新日時を採用するときはこの行コメントアウト※54行目を使う // データベースの初期設定 $conn = init(); //処理 if ($act == インポート and $impfn ) { //CSVファイルを開く //$fnで指定するファイルを読み取りモードで開く $fn=$impfn; $fp = fopen($fn, r ); //CSVファイルのパスとファイル名 //CSVデータを1行ずつ読み込んでファイルが終わるまで配列に入れる。 $counter = 1; while ($data = fgetcsv($fp, 10000)) { //変数に代入 //$id=$data[0]; $name=$data[1]; $comment=$data[2]; $hyou=$data[3]; $kakaku=$data[4]; $kakaku2=$data[5]; $bunrui=$data[6]; $aji=$data[7]; $dt=$data[8];//インポート時の最終更新日時を採用するときはこの行コメントアウト※31行目を使う add_data($conn, $name, $comment, $hyou, $kakaku, $kakaku2, $bunrui, $aji, $dt); //Wile文の終端 $counter++ ; } //ファイルを閉じる fclose($fp); //if文の終端 echo $impfn. をインポートしました。 ; } // データベースの初期設定 function init() { // データベースに接続(カレントフォルダのmenu.sqliteというファイル名) $conn = new PDO( sqlite menu.sqlite ); // データベースの作成 $sql = CREATE TABLE IF NOT EXISTS menu ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, comment TEXT NOT NULL, hyou, kakaku, kakaku2, bunrui, aji, dt TEXT NOT NULL ) ; $stmt = $conn- prepare($sql); $stmt- execute(); return $conn; } // データの追加 function add_data($conn, $name, $comment, $hyou, $kakaku, $kakaku2, $bunrui, $aji, $dt) { $sql = INSERT INTO menu(name, comment, hyou, kakaku, kakaku2, bunrui, aji, dt) VALUES( name, comment, hyou, kakaku, kakaku2, bunrui, aji, dt) ; $stmt = $conn- prepare($sql); $stmt- bindParam( name , $name); $stmt- bindParam( comment , $comment); $stmt- bindParam( hyou , $hyou); $stmt- bindParam( kakaku , $kakaku); $stmt- bindParam( kakaku2 , $kakaku2); $stmt- bindParam( bunrui , $bunrui); $stmt- bindParam( aji , $aji); $stmt- bindParam( dt , $dt); $stmt- execute(); $id = $conn- lastInsertId(); return $id; } ? !-- フォーム -- form method= POST action= ?php echo $_SERVER[ SCRIPT_NAME ]? input type= file name= impfn size= 30 input type= submit value= インポート name= act onClick= return confirm( インポートします ) /form ?php // 全データの取得 $sql = SELECT * FROM menu ORDER BY id ; $stmt = $conn- prepare($sql); $stmt- execute(); // データの一覧表示 echo table class=\ sfont\ border=\ 1\ ; echo tr ; echo td ID /td ; echo td 名称 /td ; echo td 得票 /td ; echo td 価格 /td ; echo td 最終更新時刻 /td ; echo /tr ; while ($row = $stmt- fetch()) { echo tr ; echo td . $row[ id ] . /td ; echo td . $row[ name ] . /td ; echo td . $row[ hyou ] . /td ; echo td . $row[ kakaku ] . /td ; echo td . $row[ dt ] . /td ; echo /tr ; } echo /table ; ? /body /html ともかくこれで、アミーゴのデータを全部SQLiteに移行した。文字化けなし。 全くなし。 SHIFT-JISであろうとfgetcsvであろうと文字化けなし。 $_POSTだけバックスラッシュ取ればいいのだ! 文字化けアレルギーにかかっていた。 stripslashesは、やたらと使うもんじゃない。これを使いすぎて、\が無くなって,逆に5C問題が発生する。基礎的な設定が正しければstripslashesはPOSTを受けた直後の$_POSTにだけ施せばよろしい。例えば、stripslashes($_POST[ comment ])みたいにPOSTを受ければそれで何もかもうまくいく。下手に対処療法ばかりやってはいけない。対処療法が症状を生みさらに対処療法をするとそれがまた症状を生むという悪循環に陥る。おおもとの部分を解決しなければ永遠のいたちごっこになる。 カクテルはさすがに26種類のフィールドで、486行だから時間がPHP既定の30秒では足りず、 Fatal error Maximum execution time of 30 となった。 プログラムの先頭に秒数を書く。120秒でどうだ。 set_time_limit(120); 結果、65秒であった。2年かけて入力したデータだからな。65秒ぐらいかかってくれたほうがうれしい。 $conn = new PDO( sqlite パス/cocktail.db );// データベースに接続 $stmt = $conn- query( SELECT count (*) FROM cocktail where {$where} );//countで、セレクトされる行数を取得する。 $total = $stmt- fetchColumn();//カウントの結果はこれで。なお(*)は(id)などnotnullのフィールドでもいい。 $conn = null;//接続を切る 検索結果の表示でページャー(ページ送り機能)を使いたかったので、検索結果件数を上のコードで取得。{$where}はWhere句の内容。 ページャーはレッツPHPさんのお世話になりました。よくできたプログラム。わかりやすいし。 http //php.s3.to/simple/
https://w.atwiki.jp/glicotan/pages/17.html
MySQLのインストール MySQLのサイトからDL インストーラーのほうが楽。 しかし、自分の場合はインストーラーが動かなかったのでZIPのを使用した。 最近はDLするのにアカウントを求められるのでめんどくさい。 ミラーサイトからDLした。 "mysql-5.5.27-winx64.zip"でググればすぐ見つかる。 解凍先はどこでもいいが、今回は"C \mysql\"に解凍した 設定ファイルを作る。 "C \mysql\"の中に"my.ini"というファイルを作る。 [mysqld] basedir="c /mysql/" datadir="c /mysql/data/" character-set-server=utf8 [mysql] default-character-set=utf8 と記述 Windowsのサービスにmysqldを追加する。 管理者権限でコマンドプロンプトを起動。 cd c \mysql\bin mysqld --install と入力 Service successfully installed.となれば成功。 逆に削除する方法 詳しくは→http //ub.blog85.fc2.com/blog-entry-287.html コマンドプロンプトで sc.exe delete mysql サービスの起動 コマンドプロンプトで net start mysqld と記入するとSQLが起動し、アクセスできるようになる。 あとはrootユーザ以外のアカウントを作ったりといろいろやるけど... がんばれ。めっちゃがんばれ
https://w.atwiki.jp/nicepaper/pages/115.html
PHP MySQLでデータ一覧を取り出して並べる方法はforeach文やwhile ($data = $stmt- fetch(PDO FETCH_ASSOC))を使っていることが多いと思います。この場合、HTMLの方もliタグ、dt ddタグでデザインもループしていることが多いです。 今日はそんな中で、ループをあまり必要としないレイアウトへデータを並べるためにはどうしたらよいのか、また、MySQLからそもそもデータを取り出すこととはどういういことなのかをまとめていきたいと思います。7月1日記事 目次 データの取得 レイアウトにはめ込んでいく データの取得 ※データベースのパスワード情報はconfigファイルに入っているという仮定のもと進めていきます。 もしわからなければ、phpのconfigファイルをご覧ください。 コード ?php //configファイル読み込み require( config.php ); //データベース接続へ組立 $dsn = mysql dbname= .DB_NAME. ;host= .DB_HOST. ;port= .DB_PORT. ; $user = DB_USER; $password = DB_PASSWORD; //データベース接続&接続しなければエラー try{ $dbh = new PDO($dsn, $user, $password); }catch (PDOException $e){ print( Connection failed .$e- getMessage()); die(); } //テーブル名からすべてのカラム情報を取得する $sql = "SELECT * FROM table_name"; //からの配列を用意して、$rowとして取り出す $data = array(); foreach($dbh- query($sql) as $row){ array_push($data,$row); } //表示する var_dump($data); exit; ? これで、データベースから取り出したデータが配列として格納されていると思います。これをforeach文でループしまわしてくことでデータを並べたりできます。 レイアウトにはめ込んでいく しかし、レイアウトも複雑で、ループしても非効率という場合は、そのままそっくり多次元配列を並べていきましょう。 普通にHTML部にphpで編集したい領域があった場合にforeach等を使わず、多次元配列を埋めていくことでデータベースからの情報を出力していくことができます。 例 そのままデータベースから取り出す場合※idが1のデータを取り出していく場合 何かのタグ ?php echo nl2br(htmlspecialchars($data[0][ column1 ], ENT_QUOTES,"UTF-8")); ? /なにかのタグ終了 例 データベースの文字コードがEUC-JPでUTF-8に戻したい場合※idが1のデータを取り出していく場合 何かのタグ ?php echo nl2br(htmlspecialchars(mb_convert_encoding($data[0][ column1 ], "UTF-8","EUC-JP"),ENT_QUOTES,"UTF-8")); ? /なにかのタグ終了 などというように配列をそのまま並べていけばできます。 ただし、注意すべき点は データベースのidが1から始まっているデータ一覧を取り出していく場合、配列は[0]から始まるので、1を引いた番号を配列番号として表現していくことが重要です。 以上のようにすれば複雑なレイアウトやループを使わない場合でもデータを並べていくことができます。 以上
https://w.atwiki.jp/javascripter/pages/16.html
取得 Smarty が使いたいので、CakePHP 1.2.x をダウンロード。Smarty 2.x と Smarty View Class for 1.2 も準備。 展開 CakePHPDir/ + app/ .htaccess ※ 編集 app_controller.php ※ 新規作成 and more ... + config core.php ※ 編集 database.php ※ database.php.default をリネーム・編集 + tmp ※ chmod 777 + smarty ※ 新規作成 + cache ※ 新規作成, chmod 777 + compile ※ 新規作成, chmod 777 + views smarty.php ※ Smarty View Class(smarty.php) 配置 + webroot .htaccess ※ 編集 index.bin ※ index.php をリネーム and more ... + cake/ + and more ... + venders/ + smarty/ ※ smarty/libs 以下のファイルを展開(『smarty』ディレクトリ名はすべて小文字) Smarty.class.php and more ... .htaccess ※ 編集 and more ... 編集 http //www33.atpages.jp/~cakephpdemo/ に CakePHP をインストールした場合の例。(アカウント名 cakephpdemo) CakePHPDir/.htaccess # 追加 *.bin を *.php と同様に扱う AddType application/x-httpd-php .bin IfModule mod_rewrite.c RewriteEngine on # 追加 RewriteBase /~cakephpdemo/ # RewriteRule ^$ app/webroot/index.php [L] を以下に変更 RewriteRule ^$ app/webroot/index.bin [L] RewriteRule (.*) app/webroot/$1 [L] /IfModule CakePHPDir/app/.htaccess IfModule mod_rewrite.c RewriteEngine on # 追加 RewriteBase /~cakephpdemo/app/ RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] /IfModule CakePHPDir/app/webroot/.htaccess IfModule mod_rewrite.c RewriteEngine On # 追加 RewriteBase /~cakephpdemo/app/webroot/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f #RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] を以下に変更 RewriteRule ^(.*)$ index.bin?url=$1 [QSA,L] /IfModule 編集後、http //www33.atpages.jp/~cakephpdemo/ へアクセスし、CakePHP の画面が表示されることを確認する。Notice/Warning 連発だがいちおうアクセスできていることがわかる。アクセス権限がらみのものは修正する。 CakePHPDir/app/config/core.php の Security.salt // Configure write( Security.salt , DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi ); // を修正 Configure write( Security.salt , anythingyouwant ); これが何を意味するかは調査中。とりあえず Notice を消す。 CakePHPDir/app/config/database.php var $default = array( driver = mysql , persistent = false, host = localhost , login = foo , password = your_db_password , database = db0foo , prefix = , encoding = utf8 , ); atpages で利用する場合、最低 login, password, database を編集。atpages アカウント管理 で。 ここまでで、Warning/Notice がすべて消えるはず。 smarty 導入 CakePHPDir/app/views/smarty.php 設置 CakePHPDir/app/tmp/smarty, CakePHPDir/app/tmp/smarty/cache, CakePHPDir/app/tmp/smarty/compile のディレクトリを掘り、cache, compile は chmod 777 に。 CakePHPDir/app/app_controller.php を新規作成 class AppController extends Controller { var $view = Smarty ; // 追記 }
https://w.atwiki.jp/kiminori_hirose/pages/15.html
データベース作成 CREATE DATABASE {データベース名} [CHARACTER SET {文字コード名}]; データベース削除 DROP DATABASE {データベース名}; ユーザ作成 GRANT ALL PRIVILEGES ON *.* TO {ユーザ名} @ % IDENTIFIED BY {パスワード} WITH GRANT OPTION; データベース変更 USE {データベース名}; テーブル名を変更 ALTER TABLE {旧テーブル名} RENAME TO {新テーブル名};
https://w.atwiki.jp/nicepaper/pages/164.html
昨日の記事phpプログラミング入門-データベースにアクセスする(mysql_connect)を使用のやり方では、セキュリティに脆弱性があったり、データベースの種類によって少し使う関数が変わってきてしまうため現在は推奨されていません。 そこで今日は現在推奨されているPDOを使ったやり方で昨日の記事と同じような事をやってみようと思います。 下準備 昨日と同じです。 データベースにアクセス⇒データベースの情報を表示⇒データベースに新しい情報を追加 という流れでチャレンジしてみます。 データベースにアクセス php ?php //データベースにアクセスして選択する $user = **** ; $pass = ***** ; try { $dbh = new PDO( mysql host=localhost;dbname=for_practice , $user, $pass); if($dbh){ echo "データベースへの接続に成功しました。"; }else{ echo "データベースへの接続に失敗しました。"; } } catch (PDOException $e) { print "エラー! " . $e- getMessage() . " br/ "; die(); } ? 解説 まず、変数にphpMyAdminのユーザー名とパスを格納します。 次にtryとcatchについて説明していきます。 try節の中には例外発生の可能性のあるコードを記述し、catchは(例外クラス名 変数){例外発生時の処理}という具合に記述をします。 もしも例外が発生しなかった場合はcatchの記述は無視されて次の処理に進んでいきます。 die();はそこでphpの処理を終了するという関数です。 つまり今回の場合もしもエラー!と表示されたら、そこで処理を終了させるという事になります。 データを表示する php ?php //データベースからデータを出力 $sql = select * from for_practice ; $stmt = $dbh- query($sql); $stmt- execute(); while($result = $stmt- fetch(PDO FETCH_ASSOC)){ print($result[ id ]. br ); print($result[ name ]. br ); print($result[ price ]. br ); } ? 解説 prepareメソッド(prepare()の部分)はqueryメソッドと似たような役割をはたしますが、SQL文の基本部分が同じで値だけ異なるような場合(例えば同じテーブルに値だけ変えて何回もデータを挿入するような場合)に効率よく行えます。 ここに関してはある意味ではテンプレートのような記述なのかも知れません。 fetch()は結果を取得して次の行をどのような形式で取得するか、といったような意味です。
https://w.atwiki.jp/sevenlives/pages/952.html
ワイルドカード(MySQL) 読み:わいるどかーど 英語:wild card 別名: 意味: MySQLで使えるワイルドカードは「%」と「_」です。 「%」はすべての文字列を意味し、「_」は全ての一文字を意味します。 使用例: SELECT COUNT(*) FROM table_name; 2008年01月05日 MySQL
https://w.atwiki.jp/nicepaper/pages/244.html
https //www.ibm.com/developerworks/jp/opensource/library/os-php-jquery-ajax/ここの記事はmysql_real_escape_stringを使った書き方をしているので、PDOバージョンで書いてみます。まだ完璧なものではないので、流れだけ解釈してもらえればと思います。10月4日記事 目次 ajaxとは サンプルコード(英単語を検索する仕組み) table作成 データ登録 index.php post.php まとめ ajaxとは IT用語辞典によれば Ajaxとは、Webブラウザに実装されているJavaScriptのHTTP通信機能を使って、Webページのリロードを伴わずにサーバとXML形式のデータのやり取りを行って処理を進めていく対話型Webアプリケーションの実装形態。 と定義されています。Googleマップなどが有名です。一昔前、データを送信して結果を受け取る場合に、submitボタンを押したりして、結果を表示していました。そんな中で、リアルタイムに表示結果がすぐ反映されたら近代的で、なおかつそれがデフォルトになりつつあります。ajaxを使った機能として、「もっと読むボタン」だったり、入力されたフォームにエラーがあればフォームのボタンを押さずに、エラー内容が出力される機能が現在有名です。 そんな中で、まずはajaxを扱ってみようという趣旨のページです。今回、英単語を検索し、その綴りと訳を表示させる内容を作っていきたいと思います。 サンプルコード(英単語を検索する仕組み) table作成 CREATE TABLE `dictionary` ( `id` INT NOT NULL AUTO_INCREMENT , `english` VARCHAR(255) NOT NULL , `japanese` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`) )ENGINE=innoDB DEFAULT CHARSET utf8 collate utf8_unicode_ci; データ登録 INSERT INTO dictionary(english,japanese) VALUES ( dog , 犬 ); INSERT INTO dictionary(english,japanese) VALUES ( cat , 猫 ); INSERT INTO dictionary(english,japanese) VALUES ( dislike , 嫌う ); INSERT INTO dictionary(english,japanese) VALUES ( disconnect , 接続を切る ); INSERT INTO dictionary(english,japanese) VALUES ( disappear , 姿を消す ); index.php !DOCTYPE HTML html head script src="https //ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" /script script type= text/javascript $(document).ready(function(){ $("#search_results").slideUp(); $("#search_button").click(function(e){ e.preventDefault(); ajax_search(); }); $("#search_str").keyup(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results").show(); var search_val=$("#search_str").val(); $.post("./post.php", {search_str search_val}, function(data){ if (data.length 0){ $("#search_results").html(data); } }) } /script meta charset="utf-8" title 英単語の検索 /title /head body h1 英単語を検索 /h1 div form id="searchform" method="post" label for="search_term" 英単語あるいは日本語を検索 /label input type="text" name="search_str" id="search_str" / input type="submit" value="search" id="search_button" / /form /div div id="search_results" /div /body /html post.php ?php require ( config.php ); $dsn = mysql dbname= .DB_NAME. ;host= .DB_HOST. ;port= .DB_PORT. ; $user = DB_USER; $password = DB_PASSWORD; try{ $dbh = new PDO($dsn, $user, $password); //$str = $_POST["search_str"]; $str = (string)filter_input(INPUT_POST, search_str ,FILTER_SANITIZE_FULL_SPECIAL_CHARS); $str = % .$str. % ; $sql = "SELECT english,japanese FROM dictionary WHERE english LIKE str OR japanese LIKE str order by id asc"; $stmt = $dbh- prepare($sql); $stmt- bindParam( str ,$str,PDO PARAM_STR); $stmt- execute(); $string = ; if($result = $stmt- fetch(PDO FETCH_ASSOC) != NULL){ while($result = $stmt- fetch(PDO FETCH_ASSOC)){ $string .= p .$result["english"].$result["japanese"]. /p ; } }else{ $string .= 検索語はありません。 ; } echo $string; }catch(PDOException $e){ print Connection failed .$e- getMessage(); die(); } ? まとめ PDOを使った例を表示しましたが、一部の単語がうまく検索できませんでした・・・。もう少し勉強します。 以上